<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <title>图解HTTP七确保Web安全的HTTPS | 清风向阳</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  
    <meta name="keywords" content="Joker,Joker's Blog" />
  
  <meta name="description" content="在HTTP协议中有可能存在信息窃听或身份伪装等安全问。使用HTTPS通信机制可以有效的防止这些问题。">
<meta name="keywords" content="HTTP">
<meta property="og:type" content="article">
<meta property="og:title" content="图解HTTP七确保Web安全的HTTPS">
<meta property="og:url" content="http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/index.html">
<meta property="og:site_name" content="清风向阳">
<meta property="og:description" content="在HTTP协议中有可能存在信息窃听或身份伪装等安全问。使用HTTPS通信机制可以有效的防止这些问题。">
<meta property="og:updated_time" content="2017-09-15T06:59:52.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="图解HTTP七确保Web安全的HTTPS">
<meta name="twitter:description" content="在HTTP协议中有可能存在信息窃听或身份伪装等安全问。使用HTTPS通信机制可以有效的防止这些问题。">
  
  
    <link rel="icon" href="/favicon_pic.ico">
  
  <link href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  <link rel="stylesheet" href="/css/style.css">
  <script src="/js/pace.min.js"></script>
  

  
  

</head>

<body>
  <div id="container">
      <header id="header">
    <div id="banner"></div>
    <div id="header-outer">
        <div id="header-menu" class="header-menu-pos animated">
            <div class="header-menu-container">
                <a href="/" class="left">
                    <span class="site-title">Joker&#39;s Blog</span>
                </a>
                <nav id="header-menu-nav" class="right">
                    
                    <a  href="/">
                        <i class="fa fa-home"></i>
                        <span>Home</span>
                    </a>
                    
                    <a  href="/archives">
                        <i class="fa fa-archive"></i>
                        <span>Archives</span>
                    </a>
                    
                    <a  href="/about">
                        <i class="fa fa-user"></i>
                        <span>About</span>
                    </a>
                    
                </nav>
                <a class="mobile-header-menu-button">
                    <i class="fa fa-bars"></i>
                </a>
            </div>
        </div>
        <div id="header-row">
            <div id="logo">
                <a href="/">
                    <img src="/images/avatar.jpg" alt="logo">
                </a>
            </div>
            <div class="header-info">
                <div id="header-title">
                    
                    <h2>
                        Joker&#39;s Blog
                    </h2>
                    
                </div>
                <div id="header-description">
                    
                    <h3>
                        一个认真的技术博客
                    </h3>
                    
                </div>
            </div>
            <nav class="header-nav">
                <div class="social">
                    
                        <a title="Joker"  href="//joker-studio.pub">
                            <i class="fa fa-home fa-2x"></i></a>
                    
                        <a title="Github" target="_blank" href="//github.com/mjjde">
                            <i class="fa fa-github fa-2x"></i></a>
                    
                </div>
            </nav>
        </div>
    </div>
</header>
      <div class="outer">
        <section id="main" class="body-wrap"><article id="post-图解HTTP七确保Web安全的HTTPS" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-inner">
    
      <header class="article-header">
        
  
    <h1 class="post-title" itemprop="name">
      图解HTTP七确保Web安全的HTTPS
    </h1>
    <div class="post-title-bar">
      <ul>
          
              <li>
                  <i class="fa fa-book"></i>
                  
                      <a href="/categories/网络技术/">网络技术</a>
                  
              </li>
          
        <li>
          <i class="fa fa-calendar"></i>  2017-06-09
        </li>
        <li>
          <i class="fa fa-eye"></i>
          <span id="busuanzi_value_page_pv"></span>
        </li>
      </ul>
    </div>
  

          
      </header>
    
    <div class="article-entry post-content" itemprop="articleBody">
      
            
            <blockquote>
<p>在HTTP协议中有可能存在信息窃听或身份伪装等安全问。使用HTTPS通信机制可以有效的防止这些问题。<br><a id="more"></a></p>
</blockquote>
<h4 id="HTTP的缺点"><a href="#HTTP的缺点" class="headerlink" title="HTTP的缺点"></a>HTTP的缺点</h4><ol>
<li>通信使用明文(不加密),内容可能会被窃听</li>
<li>不验证通信方的身份，因此有可能遭遇伪装</li>
<li>无法证明报文的完整性，所以有可能已经遭到更改</li>
</ol>
<p>另外Java，PHP等汇编语言在开发WEB应用是也可能产生安全漏洞</p>
<h5 id="通信使用明文可能会被窃听"><a href="#通信使用明文可能会被窃听" class="headerlink" title="通信使用明文可能会被窃听"></a>通信使用明文可能会被窃听</h5><ul>
<li><p>TCP/IP是可能被窃听的网络</p>
<p>  根据TCP/IP通信机制，不管通信的内容有没有被加密，都会被窃听到，只是说加密后的报文被窃听后可能无法破解而对内容无法获取，但是如果是明文的话，窃听到的内容即可被识别。</p>
</li>
<li><p>加密处理防止被窃听</p>
<p>  <strong>通信的加密</strong></p>
<p>  HTTP 协议中没有加密机制，但可以通过和SSL(Secure Socket Layer，安全套接字)或TLS(Transport Layer Security，安全层传输协议)的组合使用，加密 HTTP 的通信内容。</p>
<p>  <strong>内容的加密</strong></p>
<p>  还有一种将参与通信的内容本身加密的方式。由于HTTP协议中没有加密机制，那么就对HTTP协议传输的内容本身加密。即把HTTP报文里所含的内容进行加密处理。</p>
</li>
</ul>
<h5 id="不验证通信方的身份就有可能遭遇伪装"><a href="#不验证通信方的身份就有可能遭遇伪装" class="headerlink" title="不验证通信方的身份就有可能遭遇伪装"></a>不验证通信方的身份就有可能遭遇伪装</h5><ul>
<li>无法确定请求发送至目标的Web服务器是不是按真实意图返回的响应的那台服务器。有可能是已伪装的Web服务器</li>
<li>无法确定响应返回到的客户端是否是按真是意图接受响应额那个客户端，有可能是已经伪装的客户端</li>
<li>无法确定正在通信的对方是否具备访问权限，因为有些WEB服务器上保存了重要的信息，只想发给特定的用户</li>
<li>无法判断请求是来自何方，出自谁手</li>
<li>即使是无意义的请求也会照单全收。无法阻止海量请求下的DoS攻击</li>
</ul>
<p><strong>查明对手的证书</strong><br>  虽然使用HTTP协议无法确定通信方，但如果使用SSL则可以。SSL不仅提供加密处理，而且还使用了一种被称为证书的手段，可用于确定方。</p>
<h5 id="无法证明报文的完整性，可能已经遭到篡改"><a href="#无法证明报文的完整性，可能已经遭到篡改" class="headerlink" title="无法证明报文的完整性，可能已经遭到篡改"></a>无法证明报文的完整性，可能已经遭到篡改</h5><p><strong>接收到的内容可能有误</strong><br>由于HTTP协议无法证明通信的报文完整，因此，在请求或响应发送出之后直到对方接收之前的这段时间内，即使请求或响应的内容遭到了篡改，也没有办法获悉</p>
<p><strong>如何防止篡改</strong><br>为了有效防止这些弊端，有必要使用HTTPS。SSL提供认证和加密处理及摘要功能。仅靠HTTP确保完整性是非常困难的，因此通过和其他协议使用来实现这个目标</p>
<h4 id="HTTP-加密-认证-完整性保护-HTTPS"><a href="#HTTP-加密-认证-完整性保护-HTTPS" class="headerlink" title="HTTP+加密+认证+完整性保护=HTTPS"></a>HTTP+加密+认证+完整性保护=HTTPS</h4><h5 id="HTTPS是身披SSL外壳的HTTP"><a href="#HTTPS是身披SSL外壳的HTTP" class="headerlink" title="HTTPS是身披SSL外壳的HTTP"></a>HTTPS是身披SSL外壳的HTTP</h5><p>HTTPS并非是应用 的一种新协议，通常，HTTP直接和TCP通信。当使用SSL时，则演变成先和SSL通信，再由SSL和TCP通信了。SSL是独立于HTTP的协议，所以不止是HTTP协议，其他运行在应用层的SMTP和Telnet等协议都可配合SSL协议使用</p>
<h5 id="相互交换密钥的公开密钥加密技术"><a href="#相互交换密钥的公开密钥加密技术" class="headerlink" title="相互交换密钥的公开密钥加密技术"></a>相互交换密钥的公开密钥加密技术</h5><p>现代的加密方法中加密算法是公开的，而密钥却是保密的。通过这种方式得以保持加密方法的安全。加密和解密都会用到密钥。没有密钥就无法对密码解密，反过来说，任何人只要持有密钥就能解密了</p>
<p><strong>共享密钥加密的困境</strong><br>加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system)，也被称做对称密钥加密<br>以共享密钥方式加密时需要将密钥也发给对方，但是如何发送才能不能窃听呢，这是使用该加密的前提条件</p>
<p><strong>使用两把密钥的公开密钥加密</strong><br>公开密钥加密方式很好地解决了共享密钥加密的困难<br>公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key)，另一叫做公开密钥(public key)。顾名思义，私有密钥不能让其它他任何人知道，而公开密钥是可以随意发布，任何人都可以获得。</p>
<p><strong>采用混合加密机制</strong><br>HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换，那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比，其处理速度要慢。<br>所以应充分利用两者各自的优势，将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式，之后的建立通信交换报文阶段则使用共享密钥加密方式。</p>
<h5 id="证明公开密钥正确性的证书"><a href="#证明公开密钥正确性的证书" class="headerlink" title="证明公开密钥正确性的证书"></a>证明公开密钥正确性的证书</h5><p>为了确保公开密钥可以正确的传递给客户端，需要服务端向第三方的权威机构申请加密的证书，该证书的生成是将服务端的公开密钥发给第三方，第三方使用自己的私钥加密服务端发送过来的公开密钥，由于第三方已经将自己的公开密钥加入到了客户端里，所以客户端就可以去对证书进行解码验证，核实了是第三方权威机构发来的证书，在解码出服务端发过来的公开密码，客户端就可以使用这个公开密钥来和服务端进行通信了。</p>

            <div class="post-copyright">
    <div class="content">
        <p>最后更新： 2017年09月15日 14:59</p>
        <p>原始链接： <a class="post-url" href="/2017/06/09/图解HTTP七确保Web安全的HTTPS/" title="图解HTTP七确保Web安全的HTTPS">http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/</a></p>
        <footer>
            <a href="http://mjjde.github.io">
                <img src="/images/avatar.jpg" alt="Joker Mei">
                Joker Mei
            </a>
        </footer>
    </div>
</div>

      
    </div>
    <footer class="article-footer">
        
        
<div class="post-share">
    <a href="javascript:;" id="share-sub" class="post-share-fab">
        <i class="fa fa-share-alt"></i>
    </a>
    <div class="post-share-list" id="share-list">
        <ul class="share-icons">
          <li>
            <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/&title=《图解HTTP七确保Web安全的HTTPS》 — 清风向阳&pic=http://mjjde.github.ioimages/avatar.jpg" data-title="微博">
              <i class="fa fa-weibo"></i>
            </a>
          </li>
          <li>
            <a class="weixin share-sns" id="wxFab" href="javascript:;" data-title="微信">
              <i class="fa fa-weixin"></i>
            </a>
          </li>
          <li>
            <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/&title=《图解HTTP七确保Web安全的HTTPS》 — 清风向阳&source=
在HTTP协议中有可能存在信息窃听或身份伪装等安全问。使用HTTPS通信机制可以有效的防止这些问题。" data-title="QQ">
              <i class="fa fa-qq"></i>
            </a>
          </li>
          <li>
            <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/" data-title="Facebook">
              <i class="fa fa-facebook"></i>
            </a>
          </li>
          <li>
            <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《图解HTTP七确保Web安全的HTTPS》 — 清风向阳&url=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/&via=http://mjjde.github.io" data-title="Twitter">
              <i class="fa fa-twitter"></i>
            </a>
          </li>
          <li>
            <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/" data-title="Google+">
              <i class="fa fa-google-plus"></i>
            </a>
          </li>
        </ul>
     </div>
</div>
<div class="post-modal wx-share" id="wxShare">
    <a class="close" href="javascript:;" id="wxShare-close">×</a>
    <p>扫一扫，分享到微信</p>
    <img src="//api.qrserver.com/v1/create-qr-code/?data=http://mjjde.github.io/2017/06/09/图解HTTP七确保Web安全的HTTPS/" alt="微信分享二维码">
</div>

<div class="mask"></div>

        
        <ul class="article-footer-menu">
            
            
  <li class="article-footer-tags">
    <i class="fa fa-tags"></i>
      
    <a href="/tags/HTTP/" class="color5">HTTP</a>
      
  </li>

        </ul>
        
    </footer>
  </div>
</article>


    <aside class="post-toc-pos post-toc-top" id="post-toc">
        <nav class="post-toc-wrap">
            <ol class="post-toc"><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#HTTP的缺点"><span class="post-toc-text">HTTP的缺点</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#通信使用明文可能会被窃听"><span class="post-toc-text">通信使用明文可能会被窃听</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#不验证通信方的身份就有可能遭遇伪装"><span class="post-toc-text">不验证通信方的身份就有可能遭遇伪装</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#无法证明报文的完整性，可能已经遭到篡改"><span class="post-toc-text">无法证明报文的完整性，可能已经遭到篡改</span></a></li></ol></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#HTTP-加密-认证-完整性保护-HTTPS"><span class="post-toc-text">HTTP+加密+认证+完整性保护=HTTPS</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#HTTPS是身披SSL外壳的HTTP"><span class="post-toc-text">HTTPS是身披SSL外壳的HTTP</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#相互交换密钥的公开密钥加密技术"><span class="post-toc-text">相互交换密钥的公开密钥加密技术</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#证明公开密钥正确性的证书"><span class="post-toc-text">证明公开密钥正确性的证书</span></a></li></ol></li></ol>
        </nav>
    </aside>
    

<nav id="article-nav">
  
    <a href="/2017/06/14/图解HTTP八确认访问用户身份的认证/" id="article-nav-newer" class="article-nav-link-wrap">

      <span class="article-nav-title">
        <i class="fa fa-hand-o-left" aria-hidden="true"></i>
        
          图解HTTP八确认访问用户身份的认证
        
      </span>
    </a>
  
  
    <a href="/2017/05/06/图解Http六HTTP首部/" id="article-nav-older" class="article-nav-link-wrap">
      <span class="article-nav-title">图解Http六HTTP首部</span>
      <i class="fa fa-hand-o-right" aria-hidden="true"></i>
    </a>
  
</nav>



    
</section>
        
      </div>
      <footer id="footer">
  <div class="outer">
    <div id="footer-info" class="inner">
      
<p>
    <span id="busuanzi_container_site_uv" style='display:none'>
        总访客数：<span id="busuanzi_value_site_uv"></span>
    </span>
    <span id="busuanzi_container_site_pv" style='display:none'>
        总访问量：<span id="busuanzi_value_site_pv"></span>
    </span>
</p>


      <p>
        Powered by  <a href="http://hexo.io/" target="_blank">Hexo</a>
        Theme <a href="//github.com/wongminho/hexo-theme-miho" target="_blank">MiHo</a>
      &copy; 2018 Joker Mei<br>
      </p>
    </div>
  </div>
</footer>
    <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<script src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
  var mihoConfig = {
      root: "http://mjjde.github.io",
      animate: false,
      isHome: false,
      share: true
  }
</script>
<div class="sidebar">
    <!-- <div id="sidebar-search" title="Search">
        <i class="fa fa-search"></i>
    </div> -->
    <div id="sidebar-category" title="Categories">
        <i class="fa fa-book"></i>
    </div>
    <div id="sidebar-tag" title="Tags">
        <i class="fa fa-tags"></i>
    </div>
    <div id="sidebar-top">
        <span class="sidebar-top-icon"><i class="fa fa-angle-up"></i></span>
    </div>
</div>
<div class="sidebar-menu-box" id="sidebar-menu-box">
    <div class="sidebar-menu-box-container">
        <div id="sidebar-menu-box-categories">
            <a class="category-link" href="/categories/Android技术/">Android技术</a><a class="category-link" href="/categories/其他技术/">其他技术</a><a class="category-link" href="/categories/网络技术/">网络技术</a><a class="category-link" href="/categories/设计模式/">设计模式</a>
        </div>
        <div id="sidebar-menu-box-tags">
            <a href="/tags/Activity/" style="font-size: 10px;">Activity</a> <a href="/tags/Android/" style="font-size: 16px;">Android</a> <a href="/tags/Android-IPC/" style="font-size: 10px;">Android-IPC</a> <a href="/tags/Binder/" style="font-size: 16px;">Binder</a> <a href="/tags/DiskLruCache/" style="font-size: 10px;">DiskLruCache</a> <a href="/tags/Fragment/" style="font-size: 10px;">Fragment</a> <a href="/tags/HTTP/" style="font-size: 20px;">HTTP</a> <a href="/tags/Java/" style="font-size: 10px;">Java</a> <a href="/tags/Notification/" style="font-size: 10px;">Notification</a> <a href="/tags/RemoteView/" style="font-size: 10px;">RemoteView</a> <a href="/tags/Rxjava/" style="font-size: 14px;">Rxjava</a> <a href="/tags/ServiceManager/" style="font-size: 14px;">ServiceManager</a> <a href="/tags/android/" style="font-size: 12px;">android</a> <a href="/tags/gradle/" style="font-size: 10px;">gradle</a> <a href="/tags/java/" style="font-size: 18px;">java</a> <a href="/tags/other/" style="font-size: 10px;">other</a> <a href="/tags/volley/" style="font-size: 12px;">volley</a> <a href="/tags/widget/" style="font-size: 10px;">widget</a> <a href="/tags/事件/" style="font-size: 10px;">事件</a> <a href="/tags/组件化/" style="font-size: 10px;">组件化</a> <a href="/tags/设计模式/" style="font-size: 18px;">设计模式</a>
        </div>
    </div>
    <a href="javascript:;" class="sidebar-menu-box-close">&times;</a>
</div>
<div class="mobile-header-menu-nav" id="mobile-header-menu-nav">
    <div id="mobile-header-menu-container">
        <span class="title">Menu</span>
        <ul class="mobile-header-menu-navbar">
            
            <li>
                <a  href="/">
                    <i class="fa fa-home"></i><span>Home</span>
                </a>
            </li>
            
            <li>
                <a  href="/archives">
                    <i class="fa fa-archive"></i><span>Archives</span>
                </a>
            </li>
            
            <li>
                <a  href="/about">
                    <i class="fa fa-user"></i><span>About</span>
                </a>
            </li>
            
        </ul>
    </div>
</div>
<div class="search-wrap">
    <span class="search-close">&times;</span>
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="back">
            <i class="icon icon-lg icon-chevron-left"></i>
        </a>
        <input class="search-field" placeholder="Search..." id="keywords">
        <a id="search-submit" href="javascript:;">
            <i class="fa fa-search"></i>
        </a>
    <div class="search-container" id="search-container">
        <ul class="search-result" id="search-result">
        </ul>
    </div>
</div>

<div id="search-tpl">
    <li class="search-result-item">
        <a href="{url}" class="search-item-li">
            <span class="search-item-li-title" title="{title}">{title}</span>
        </a>
    </li>
</div>
<script src="/js/search.js"></script>
<script src="/js/main.js"></script>








  </div>
</body>
</html>